package kn.webstd.g4g.business;

import java.util.List;
import kn.webstd.g4g.commons.dts.BUDts;
import kn.webstd.g4g.commons.dts.GraphicDts;
import kn.webstd.g4g.commons.dts.ObjectiveDts;
import kn.webstd.g4g.commons.dts.ProgramDts;
import kn.webstd.g4g.commons.dts.StatusDts;
import kn.webstd.g4g.commons.dts.UsersDts;
import kn.webstd.tools.business.IService;
import kn.webstd.tools.business.security.IAuthorizationManager.PermitAll;

@PermitAll
public interface IObjectiveService extends IService {
	public ObjectiveDts getObjective(ObjectiveDts objective);
	public BUDts getBUByObjective(ObjectiveDts objective);
	public List<ProgramDts> getAllProgramsByObjective(ObjectiveDts objective, StatusDts period);
	public double getTotalDaysBetween(ObjectiveDts objective);
	public ObjectiveDts calculateGAP(ObjectiveDts objective, StatusDts period);
	public List<ObjectiveDts> getObjectivesByUser(UsersDts user, StatusDts period);
	public List<ObjectiveDts> getObjectivesByBU(BUDts bu, StatusDts period);
	public List<ObjectiveDts> getObjectivesByStatusUser(StatusDts period, UsersDts user);
	public List<ObjectiveDts> getObjectivesByStatusUserNotFinished(StatusDts period, UsersDts user);
	public ObjectiveDts terminateObjectivesByUser(UsersDts user);
	public List<ObjectiveDts> getAllObjectivesByBU(BUDts bu);
	public List<GraphicDts> generateObjectiveGraphic(StatusDts initStatus, StatusDts endStatus, ObjectiveDts objective);
}